/**
 * Created with CLion.
 * Description:
 * User: loong
 * Date: 2024/3/7
 * Time: 8:38
 */


#ifndef CES_IPLUGINMANAGER_H
#define CES_IPLUGINMANAGER_H
#include "CesGlobal.h"

namespace CES::Core {
    class IPluginManager;
    using IPluginManagerSPtr = std::shared_ptr<IPluginManager>;
    using IPluginManagerWPtr = std::weak_ptr<IPluginManager>;

    class IPluginManager {
    public:
        virtual ~IPluginManager() = default;

        static CES_MODULE_EXPORT IPluginManagerSPtr GetInstance();

        virtual void SetPluginPaths(const QStringList &_paths) = 0;

        virtual void LoadPlugins() = 0;
    };
} // CES::Core

#endif //CES_IPLUGINMANAGER_H
